#Lua 的 for ... in 循环语句
Lua 中的 for ... in
循环(泛型 for 循环)用于遍历迭代器函数返回的值序列。这是遍历表、数组和其他可迭代对象的常用方式。
for 变量列表 in 迭代器函数, 状态值, 控制值 do
-- 循环体
end
- 每轮循环调用
迭代器函数
,参数是状态值
和控制值
,其返回值会赋值给变量列表
状态值
始终不变,用于提供额外的信息控制值
记录上次迭代的位置,会被迭代器函数
的返回第一个返回值更新迭代器函数
的返回第一个返回值为nil
时结束循环
示例:
-- 迭代器函数
function iterator(state, control)
control = control + 1
if control < state then
return control, control * control -- 返回索引和值
end
end
-- 循环
for i, v in iterator, 10, 5 do
print("索引:", i, "值:", v)
end
- 状态值为 10
- 初始控制值为 5
运行结果:
索引: 6 值: 36 索引: 7 值: 49 索引: 8 值: 64 索引: 9 值: 81
#遍历表
Lua 标准库中提供 ipairs 和 pairs 函数用于遍历表,前者用于数组,后者用于一般的表。
示例:
-- 定义数组
local array = {10, 20, 30, 40, 50}
-- 遍历数组
for i,v in ipairs(array) do
print(i, v)
end
-- 定义表
local dict = {
name = "Alice",
age = 25,
city = "Beijing"
}
-- 遍历
for k,v in pairs(dict) do
print(k, v)
end
运行结果:
1 10 2 20 3 30 4 40 5 50 name Alice city Beijing age 25